package com.schoolcloud.front.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.Data;

/**
 * 通知表
 *
 * @TableName notifications
 */
@TableName(value = "notifications")
@Data
public class Notifications implements Serializable {
    @Serial
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId
    private Integer id;
    /**
     * 接收者用户 ID（通知的目标用户）
     */
    private Integer userId;
    /**
     * 触发者用户 ID（如关注者 ID，系统通知可为 0 或 NULL）
     */
    private Integer senderId;
    /**
     * 通知类型（如follow关注、comment评论、like点赞、system系统通知）
     */
    private String type;
    /**
     * 通知标题（可选，用于重要通知的醒目展示）
     */
    private String title;
    /**
     * 通知内容（模板化文本，如 “张三关注了你”）
     */
    private String content;
    /**
     * 是否已读（0 = 未读，1 = 已读，默认 0）
     */
    private Integer isRead;
    /**
     * 跳转链接（点击通知后打开的页面，如/user/123/fans）
     */
    private String link;
    /**
     * 关联资源 ID（如被评论的帖子 ID、被点赞的评论 ID，便于追溯源头）
     */
    private Integer relatedId;
    /**
     * 关联资源类型（如post帖子、comment评论，与related_id配合使用）
     */
    private String relatedType;
    /**
     * 是否删除（0 = 未删，1 = 已删，默认 0，用于逻辑删除）
     */
    private Integer isDeleted;
    /**
     * 通知生成时间（精确到毫秒，用于排序）
     */
    private LocalDateTime createTime;
    /**
     * 标记已读的时间（便于统计 “多久前已读”）
     */
    private LocalDateTime readTime;
    /**
     *是否全局通知
     */
    private Integer isGlobal;
}
